package com.example.decode;

import lombok.Data;

//import javax.validation.Valid;
//import javax.validation.constraints.NotEmpty;
//import javax.validation.constraints.NotNull;
//import javax.validation.constraints.Pattern;
import java.util.List;

//@Data
@Data
public class KwpConfig {

    //@NotNull
    //@NotEmpty
    private String name;

    /**
     * 终端型号
     */
    //@NotNull
    private Integer deviceType;

    /**
     * 配置类型
     */
    //@NotNull
    private Integer configType;

    /**
     * 版本
     */
    //@NotNull
    private Integer version;

    /**
     * 波特率
     */
    //@NotNull
    private Integer baudRate;


    /**
     * 配置组
     */
    //@NotEmpty
    //@NotNull
    private List<Group> groups;


    //@Data
    public static class Group {

        /**
         * 组编号
         */
        private Integer id;

        /**
         * 采集方式
         */
        //@NotNull
        private Integer collectType;

        /**
         * 点火时采集延时时间
         */
        //@NotNull
        private Integer delayAfterOn;

        /**
         * 行驶过程中发送周期
         */
        //@NotNull
        private Integer Interval;

        /**
         * 进入地址码
         */
        //@Pattern(regexp = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+")
        private String enterAddressCode = "";

        /**
         * 开始通讯数据
         */
        //@Pattern(regexp = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+")
        private String startCommunicationData = "";

        /**
         * 结束通讯数据
         */
        //@Pattern(regexp = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+")
        private String stopCommunicationData = "";

        /**
         * 链路维护发送周期
         */
        //@NotNull
        private Integer heartBeatInterval;

        /**
         * 链接维护发送数据
         */
        //@Pattern(regexp = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+")
        private String heartBeatData = "";


        /**
         * ECU忙碌报文发送周期
         */
        //@NotNull
        private Integer ecuInterval;

        /**
         * ECU忙碌报文重试次数
         */
        //@NotNull
        private Integer ecuBusyMaxRetryCount;

        /**
         * ECU忙碌报文字节
         */
        //@NotNull
        //@NotEmpty
        private String ecuBusyData;

        /**
         * ECU等待超时时长
         */
        //@NotNull
        private Integer ecuWaitTimeoutSec;

        /**
         * ECU等待超时重度次数
         */
        //@NotNull
        private Integer ecuWaitTimeoutMaxRetryCount;


        /**
         * kwp数据集
         */
        private List<KwpData> data;

    }


    //@Data
    public static class KwpData {

        /**
         * 数据编号
         */
        private Integer id;

        /**
         * KWP数据
         */
        //@Pattern(regexp = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+")
        private String data;

        /**
         * KWP数据时间间隔
         */
        private Integer interval;
    }



    public static KwpConfig emptyConfig(Integer deviceType, Integer configType, Integer version) {
        KwpConfig config = new KwpConfig();
        config.setBaudRate(0);
        config.setDeviceType(deviceType);
        config.setConfigType(configType);
        config.setVersion(version);

        return config;
    }

    public static void main(String[] args) {
        String p = "(^$)|([A-Fa-f0-9]{2}\\s{0,})+";
        System.out.println( java.util.regex.Pattern.matches(p, "") );
        System.out.println( java.util.regex.Pattern.matches(p, "4f     23 4F") );
    }

}
